<?php

namespace albert\services;

use FormBuilder\Form;

/**
 * 表单构建服务类
 * Class FormBuilder
 * @package albert\services
 */
class FormBuilder extends Form
{
    /**
     * 快速创建 POST 提交表单
     * Author: Albert3306
     * Date: 2021/4/28
     * @param $title
     * @param array $field
     * @param $url
     * @param int|string $jsCallback
     * @return Form
     */
    public static function make_post_form($title, array $field, $url, $jsCallback = 2): Form
    {
        $form = Form::create($url); // 提交地址
        $form->setMethod('POST'); // 提交方式
        $form->components($field); // 表单字段
        $form->setTitle($title); // 表单标题
        $js = ''; // 提交成功不执行任何动作
        switch ($jsCallback) {
            case 1:
                $js = 'parent.$(".J_iframe:visible")[0].contentWindow.location.reload();'; // 提交成功父级页面刷新
                break;
            case 2:
                $js = 'parent.$(".J_iframe:visible")[0].contentWindow.location.reload(); setTimeout(function(){parent.layer.close(parent.layer.getFrameIndex(window.name));},2000);'; // 提交成功父级页面刷新并关闭当前页面
                break;
            case 3:
                $js = 'parent.$(".J_iframe:visible")[0].contentWindow.location.reload();$r.btn.disabled(false);$r.btn.loading(false);'; // 提交成功父级页面刷新继续添加
                break;
            case 4:
                $js = '$r.btn.disabled(false);$r.btn.loading(false);'; // 提交成功不能再提交
                break;
            case 5:
                $js = 'console.log($r.btn);$r.btn.disabled(false);$r.btn.loading(false);setTimeout(function(){parent.layer.close(parent.layer.getFrameIndex(window.name));},2000);'; // 父级不刷新 不能再提交 关闭弹窗
                break;
            case 6:
                $js = 'setTimeout(function(){window.location.reload(),2000});'; // 父级不刷新 当前窗口刷新
                break;
            case 7:
                $js = 'console.log($r.btn);parent.$(".J_iframe:visible")[0].contentWindow.location.reload();$r.btn.disabled(false);$r.btn.loading(false);'; // 父级刷新 提交成功不能再提交
                break;
            default:
                $js = $jsCallback;
                break;
        }
        $form->setSuccessScript($js); // 提交成功执行js
        return $form;
    }
}